home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 2002 #11
/
Amiga Plus CD - 2002 - No. 11.iso
/
Tools
/
Freeware
/
DiskMaster
/
Rexx
/
ArcTrans.rexx
< prev
next >
Wrap
OS/2 REXX Batch file
|
2002-10-27
|
3KB
|
104 lines
/* $VER: ArcTrans v1.1 (29.3.95) by J. Tierney
Archive Transformer v1.1
3/29/95 J. Tierney
Usage: ArcTrans.rexx <source archive> [<dest dir>] [AUTO=1|ON]
- AUTO=1 - No requester. ArcTrans determines Lha/LZX/Best option.
*/
PARSE ARG arc dest 'AUTO=' auto .
IF auto > 0 | UPPER(auto) = 'ON' THEN auto = 1
ELSE auto = 0
arc = STRIP(arc)
dest = STRIP(dest)
tempdir = 'T:ArcTemp'
IF ~EXISTS(tempdir) THEN ADDRESS COMMAND 'C:MakeDir >NIL:' tempdir
tempdir = tempdir || '/'
/* IF RIGHT(tempdir, 1) ~= ':' & RIGHT(tempdir, 1) ~= '/' THEN tempdir = tempdir || '/' */
IF ~auto THEN DO
IF ~SHOW('L', 'rexxreqtools.library') THEN DO
IF ~ADDLIB('rexxreqtools.library', 0, -30) THEN DO
SAY 'Could not open "rexxreqtools.library".'
EXIT 10
END
END
ADDRESS COMMAND 'C:GetPubName >PIPE:arctrans'
CALL OPEN('pipe', 'PIPE:arctrans')
pub = READLN('pipe')
CALL CLOSE('pipe')
END
IF dest = '' THEN dest = 'SD0:'
IF RIGHT(dest, 1) ~= ':' & RIGHT(dest, 1) ~= '/' THEN dest = dest || '/'
y = LASTPOS('.', arc)
arcname = SUBSTR(arc, 1, y-1)
ext = FIND('LHA LZX', UPPER(SUBSTR(arc, y+1)))
x = LASTPOS('/', arcname)
IF x = 0 THEN x = LASTPOS(':', arcname)
arcname = SUBSTR(arcname, x+1)
dest = dest || arcname
arctype = C2D(BITXOR(ext, 3))
IF ~auto THEN DO
arctype = RTEZREQUEST('Transform To:', 'Lh_a|LZ_X|_Best|_Cancel', 'ArcTrans', 'rt_pubscrname=' || pub 'rt_reqpos=reqpos_centerscr rtez_defaultresponse=' || arctype)
CALL REMLIB('rexxreqtools.library')
END
IF arctype = 0 THEN EXIT 0
IF arctype = ext THEN DO
SAY arcname 'is already an' WORD('Lha LZX', ext) 'archive.'
EXIT 0
END
IF ~auto THEN SAY 'Uncompressing...'
ADDRESS COMMAND 'SYS:RexxC/RX >NIL: REXX:ArcMast.rexx' arc 'x' tempdir
olddir = PRAGMA('D', tempdir)
IF (arctype ~= ext) & (BITTST(arctype, 0)) THEN DO
IF ~auto THEN SAY 'Compressing with Lha...'
ADDRESS COMMAND 'C:Lha -r -q a' dest '#?'
END
IF (arctype ~= ext) & (BITTST(arctype, 1)) THEN DO
IF ~auto THEN SAY 'Compressing with LZX...'
ADDRESS COMMAND 'C:LZX -r -q -9 -e -Qf a' dest '#?'
END
CALL PRAGMA('D', olddir)
ADDRESS COMMAND 'C:Delete' tempdir 'ALL QUIET'
IF arctype ~= 3 THEN EXIT 0
IF ~auto THEN SAY 'Size Check...'
IF EXISTS(dest || '.lha') THEN DO
lhafile = dest || '.lha'
CALL OPEN('lha', lhafile, 'R')
lhasize = SEEK('lha', 0, 'E')
CALL CLOSE('lha')
END
ELSE EXIT 0
IF EXISTS(dest || '.LZX') THEN DO
lzxfile = dest || '.LZX'
CALL OPEN('lzx', lzxfile, 'R')
lzxsize = SEEK('lzx', 0, 'E')
CALL CLOSE('lzx')
END
ELSE EXIT 0
IF ~auto THEN DO
SAY '-' lhafile '=' lhasize 'bytes.'
SAY '-' lzxfile '=' lzxsize 'bytes.'
END
IF lhasize > lzxsize THEN DO
IF ~auto THEN SAY 'Deleting' lhafile || '...'
ADDRESS COMMAND 'C:DELETE' dest || '.lha QUIET'
END
ELSE DO
IF ~auto THEN SAY 'Deleting' lzxfile || '...'
ADDRESS COMMAND 'C:DELETE' dest || '.LZX QUIET'
END